#ifndef __SOFT_TIMER_H
#define __SOFT_TIMER_H
#include "sys.h"

#define SOFT_TIMER_MAX        6           //软件定时器数量 根据实际情况调整
#define SOFT_TIMER_DELAY_MAX  0           //最长延时时间:  0,255个时间片  1,65535个时间片

//===根据宏定义选择变量类型
#if SOFT_TIMER_DELAY_MAX > 0
  typedef unsigned int  Soft_Time_Delay_Type;
#else
  typedef unsigned char Soft_Time_Delay_Type;
#endif

//===软件定时器结构体
typedef struct 
{
  uint8_t                  :6;      //预留
  uint8_t Soft_Timer_Start :1;      //创建标志位
  uint8_t Soft_Timer_End   :1;      //时间到标志位
 
  Soft_Time_Delay_Type delay;       //软件定时时间片
  Soft_Time_Delay_Type delay_auto;  //软件定时时间片自动重装
  void (*Soft_Time_Callback)(void); //软件定时回调函数
}Soft_Timer_Handle_Type;

//===函数声明
void SoftTimer_Init(void);                                                      //初始化软件定时器    必须初始化,复位结构体变量
void SoftTimer_Create(Soft_Time_Delay_Type TimeSlice, void (*Callback)(void));  //创建一个软件定时器  TimeSlice  时间片
void SoftTimer_Delete(void (*Callback)(void));                                  //删除一个软件定时器  Callback   回调函数
void SoftTimer_Scan(void);                                                      //软件定时器扫描      决定1个时间片的时间
void SoftTimer_PerformCallback(void);                                           //时间到执行回调函数  主函数调用

#endif
